/** * Determines if a given integer is a prime number. * * @param n - The number to check. * @returns true if n is a prime, false otherwise. */ export function isPrime(n) { // Reject non-number or non-integer inputs if (typeof n !== "number" || !Number.isInteger(n)) { return false; } // Negative numbers, 0 and 1 are not prime if (n <= 1) { return false; } // 2 and 3 are prime if (n <= 3) { return true; } // Eliminate multiples of 2 and 3 early if (n % 2 === 0 || n % 3 === 0) { return false; } // Check divisibility by numbers of the form 6k ± 1 up to sqrt(n) for (let i = 5; i * i <= n; i += 6) { if (n % i === 0 || n % (i + 2) === 0) { return false; } } return true; }